/*
*	Project: Aethon
*
*	File: Model.h
*
*	Author: Robert Whiting
*
*	Date: 2/11/2009
*
*	Purpose: The model contains information for objects within the scene,
*	including physical attributes, physics attributes, and the model part
*	root item
*/

#ifndef MODEL_H_
#define MODEL_H_

#include "../include/vector3f.h"
#include "../include/Animator.h"
#include "../include/Eye.h"
#include "../include/CollisionSphere.h"
#include "../include/ModelPart.h"

class Model{

	bool hasGravity;
	bool hasVisibility;
	vector3f position;
	vector3f direction;
	vector3f velocity;
	Animator animator;
	Eye eye;
	CollisionSphere collisionSphere;
	ModelPart rootModelPart;
	
	public:
	
	Model(void){
	}//end constructor
	
	void display(void);
	
	void load(string filename);
	
	//gets and sets
	bool getHasGravity(){
		return hasGravity;
	}
	void setHasGravity(bool g){
		hasGravity = g;
	}
	
	bool getHasVisibility(){
		return hasVisibility;
	}
	void setHasVisibility(bool visibility){
		hasVisibility = visibility;
	}
	
	vector3f getPosition(){
		return position;
	}
	void setPosition(vector3f v){
		position = v;
	}
	
	vector3f getVelocity(){
		return velocity;
	}
	void setVelocity(vector3f v){
		velocity = v;
	}
	
	vector3f getDirection(){
		return direction;
	}
	void setDirection(vector3f v){
		direction = v;
	}
	
	Animator getAnimator(){
		return animator;
	}
	void setAnimator(Animator a){
		animator = a;
	}
	
	Eye getEye(){
		return eye;
	}
	void setEye(Eye e){
		eye = e;
	}
	
	CollisionSphere getCollisionSphere(){
		return collisionSphere;
	}
	void setCollisionSphere(CollisionSphere c){
		collisionSphere = c;
	}
	
	ModelPart getRootModelPart(){
		return rootModelPart;
	}
	void setRootModelPart(ModelPart m){
		rootModelPart = m;
	}
	
};

#endif /*MODEL_H_*/

